Universal OS 1.13 pour TI 89 et TI92 Plus
Copyright (C) 2000. Tous droits rservs.
Disponible sur www.ticalc.org et www.ti-fr.org

La mthode utilise par Universal OS 1.11 pour amliorer les niveaux de
gris fonctionne mais il se trouve que la qualit obtenue varie d'une
calculatrice  une autre,  tel point que c'tait parfois pire que sous
Universal OS 1.10&-.

Cette nouvelle version,  part de quelques corrections de bugs,
rutilise cette mthode mais cette fois-ci, c'est l'utilisateur qui
rgle la qualit  l'aide des touches [<>(diamant)]+[<] et [<>]+[>] :
cela concerne aussi les 92+, mais je ne crois pas que cette mthode
puisse apporter une quelconque amlioration sur celles-ci.
Le programme "adjust" permet de bien distinguer les dfauts et peut donc
servir au rglage : en fait, c'est un simple cran gris. Il utilise
gray4lib et permet aussi, avec d'autres kernels, de tester d'autres
versions de gray4lib (ou graphlib si vous utilisez gray4lib de
TEOS/DoorsOS puisqu'ils passent par graphlib).

Cette solution n'tant pas parfaite, je continue  chercher d'autres
solutions.

I) Introduction

Universal OS est un noyau (kernel). Il fonctionne sur toutes les
calculatrices et il est 'entirement' (cf 'Particularits') compatible
avec DoorsOS II 0.96. Vous pouvez archiver n'importe quelle librairie et
excuter des programmes de plus de 8 ko directement, mme sur les
ROM 2.0x. Les niveaux de gris fonctionnent sur HW1 et HW2  condition
que le programme utilise une librairies rcente pour les grer :
graphlib, gray4lib, ou gray7lib  (les 8 niveaux de gris ne sont pas
supports sur HW2) par exemple.

Universal OS n'est pas termin : il reste encore quelques limitations.

Contenu :
- install : pour installer et dsinstaller
- kernel : le noyau (non ncessaire  la dsinstallation)
- adjust : affiche un cran tout gris, pour tester les niveaux de gris

Universal OS est un 'freeware'. Sa distribution est encourage, tant que
les fichiers restent ensembles et non modififis depuis le moment o ils
ont t initialement distribus.

II) Installation et utilisation

Si vous possdez une HW2 2.0x, vous devez utilisez HW2Patch : les
possesseurs d'une HW2 2.01 devront donc installer AMS 2.03.

Lancez install. Vous pouvez maintenant utiliser n'importe quel programme
en assembleur. Seul ce programme install peut dsinstaller correctement
ce kernel.

NOTES :	- kernel doit tre dans le mme rpertoire que install
	- Vous pouvez quitter le programme assembleur en cours 
	  n'importe quel moment ( moins que le programme en question
	  ne l'en empche), en appuyant sur ESC+ON.
	- Utilisez ce programme  vos risques. Je ne peux tre jug
	  responsable des dommages qui pourraient se produire.
	- N'INSTALLEZ PAS DoorsOS aprs avoir install Universal OS (
	  moins que vous l'avez dsinstall depuis).
	- NE DESINSTALLEZ PAS Universal OS avec le programme de
	  dsinstallation livr avec DoorsOS ou un autre kernel.
        - Universal OS ne remplace pas automatiquement un ancien kernel,
	  ceci pour des raisons de scurit (comment puis-je savoir
	  comment dsinstaller un kernel ! Chacun a sa propre faon de
	  s'installer, Universal OS y compris)

III) Particularits

- util, userlib, gray4lib, gray7lib (sauf sur HW2), graphlib et linelib
  ont t reprogrammes et intgres (cad dans la variable 'kernel') 
  Universal OS.
  TOUTE LIBRAIRIE EXTERNE PORTANT L'UN DE CES NOMS NE SERA PAS PRISE EN
  COMPTE.
- rglage des niveaux de gris avec [<>]+[<] et [<>]+[>] sur HW2 : ceci
  n'est possible que si les niveaux de gris sont actives et grs par
  gray4lib/graphlib.
- Vous pouvez lancer le programme nomm 'doors'  l'aide de
  [Shift]+[ON]. Diffrences avec DoorsOS :
  - [Shift]+[ON] fonctionne plus souvent.
  - le programme 'doors' peut tre archiv.
- Tout reset est dtect par Universal OS qui affiche alors un menu :
  1) rinitialiser
  2) teindre
  3) transfrer toutes les variables dans une autre calculatrice
  Remarques :
  - grce  VTI pour pouvez aussi tous transfrer vers un ordinateur
  - lorsque vous teignez la calculatrice, il se peut qu'elle se
    rallume toute seule au plus deux secondes aprs (j'essaierai de
    trouver une solution  ce problme trange; tout ce que je sais pour
    le moment, c'est que c'est li au link).
  - ATTENTION ! Cette fonctionnalit ne garantit pas que les variables
    transfres ne plantent pas la calculatrice de destination. En
    effet, elles peuvent avoir t mal modifies s'il y a eu plantage.
    Le mieux, c'est de sauvegarder le contenu de la calculatrice de
    destination.
- Vous pouvez teindre la calculatrice  tout moment (mme quand AMS est
  occup)  l'aide de [2nd]+[ON].

- Universal OS ne rcupre pas la mmoire laisse alloue par un
  programme : personnellement, je ne vois pas comment on peut savoir si
  un bloc mmoire est perdu ou est important. D'ailleurs, l'algorithme
  employ par DoorsOS est imparfait.
- les fonctions (un)reloc(2) ne sont pas supportes : par exemple,
  prosit ne fonctionnera pas. (Je pense que c'est le seul)
- la fonction userlib::exec ne supporte le programmes zipps : c'est la
  seule diffrence avec les libraries de DoorsOS II 0.96.

IV) Notes aux programmeurs

Ces remarques concernent aussi les programmeurs qui utilisent DoorsOS.

* le point de sortie _exit :

Imaginez ce cas : une librairie A utilise, dans sa section _exit, une
librairie B et de mme, B utilise A dans sa section _exit. Si A ou B
a besoin d'une information qu'elle a supprim auparavant alors il y a un
bogue, aussi sophistique la protection Anti Crash puisse tre.
Donc n'utilisez pas de librairies  cet endroit.

* Compatibilit

Pour qu'il n'y ait plus de problmes lis  de nouvelles versions de
ROM, vitez les constantes et prfrez les RAM_CALL et les librairies,
PUIS les ROM_CALL.
En effet, TI a chang quelques ROM_CALL avec la ROM 2.xx : par exemple,
_ROM_CALL_15C ne pointe plus sur la routine EM_blockErase mais sur une
variable en rapport avec le clavier (J'espre que c'est le seul
changement).
N'utilisez pas LCD_MEM si le programme est en niveau de gris ! Il existe
des variables et des fonctions adaptes.

Faites en sorte que vos programmes soient compatibles  la fois sur la
TI 89 et la TI92 Plus. Ceci concerne surtout le clavier.

* le fichier d'en-tte DoorsOS.h :

N'utilisez pas :
- doorsos::EM_blockErase	equ	_ROM_CALL_15c
- APD_INIT	equ	LCD_MEM+$F10
  APD_TIMER	equ	LCD_MEM+$F14
  APD_FLAG	equ	LCD_MEM+$F42
  mais les fonctions userlib::get_APD et userlib::get_ADP.
- doorsos::ER_throw macro
   dc.w $A000+\1
   endm
  par scurit, mme si j'ai amlior la protection Anti Crash pour que
  le programme quitte le plus proprement possible.

* les appels  la ROM  :

Considrez que toutes les fonctions de tios dtruisent D0-D2/A0-A1 :
ceci explique pourquoi Falldown and Tetris ne sauvegardent pas les noms
sur les ROM 2.xx. Donc faites attention avec les macros WriteStr et
WriteStrA.

VI) Problmes connus

Universal OS utilise la pile superviseur pour y sauver des informations
importantes. Mais certains programmes boggus crivent  cet endroit :
avec d'autres noyaux, ce genre de bogue est invisible puisqu'ils n'y
sauvent rien, mais avec Universal OS, la calculatrice peut se planter.

VI) A faire

- supporte les fonctions reloc
- finir la fonction userlib::exec pour qu'elle puisse excuter des
  programmes zipps.
- empcher les fonctions graphiques d'crire en dehors du plan
  selectionn si les coordonnes sont mauvaises et reporter le bug par
  un message.

VII) Historique

28/05/2000 : Universal OS 1.13
- HW2 89&92+ : le rglage des niveaux de gris par [<>]+[<] et [<>]+[>]
  devrait fonctionner plus souvent.
- La fonction idle_loop ne modifie plus l'indicateur d'activit (il ne
  l'efface mme pas, contrairement aux librairies de DoorsOS).

25/05/2000 : Universal OS 1.12
- HW2 89&92+ : rglage des niveaux de gris  l'aide de [<>]+[<] et
  [<>]+[>] (adjust permet de mieux valuer la qualit des niveaux de
  gris).
- HW2 : correction d'un bogue dans graphlib::gray4.
- L'utilisation de [Shift]+[ON] n'empche plus le basic depuis un
  programme assembleur : il tait par exemple impossible d'appeler un
  programme basic depuis "doors".

11/05/2000 : Universal OS 1.11
- Amlioration des niveaux de gris sur HW2 89 (merci  Olivier Serres).
- [Shift]+[ON] support : cela lance le programme "doors".
- Mise  jour de userlib : ajout de userlib::password.
- Mise  jour des routines de niveaux de gris :
  - initialisation des plans de bits.
  - gestion du page flipping sous graphlib.
- Tous les problmes de valeurs de retour sont rsolus (c'taient deux
  bugs : un dans AMS 2.0x et un dans Universal OS).
- Universal OS dtecte si HW2Patch est ncessaire.
- Sur HW2 : la dsinstallation ne ractive plus la limitation matrielle
  des 8 ko, si on avait choisi la mthode qui ne modifie pas la ROM.
- Correction de bogues.


27/02/2000 : Universal OS 1.10
- Possibilit de sauvegarder toutes les variables juste avant un reset.
- [2nd]+[ON] fonctionne mme lorsque AMS est occup.
- le fichier kernel peut tre archiv.
- Possibilit de ne pas mettre de mot de passe.
- Correction de quelques bogues dans :
  - graphlib::clr_scr2 (dcidment !)
  - les routines de niveaux de gris.
  - kernel::exec

08/01/2000 : Universal OS 1.02
- Les librairies peuvent tre dans n'importe quel rpertoire.
- Correction du bogue dans graphlib::clr_scr2.

03/01/2000 : Universal OS 1.01
- Correction de quelques bogues au niveau de :
  - doorsos::kb_globals (_RAM_CALL_010)
  - util::clr_scr
  - userlib::lockcalc
  - checksum de Phoenix

02/01/2000 : Universal OS 1.00

VIII) Comment me contacter

e-mail : <Julien.Muchembled@netcourrier.com>

Reportez tous les bogues que vous trouvez, sans oublier de donner une
description prcise du problme.

Remarque  propos du courrier :

Je suis en prpa alors il se peut que je ne puisse pas rpondre  tout
le monde. Si possible, allez sur le forum de www.ti-fr.org. a peut
intresser tout le monde et je n'aurais plus qu'un seul message  crire
par problme.